package com.game.framework.spring.jdbctemplate;

import java.io.Serializable;
import java.util.List;

/**
 * BaseDAO
 * @author Liyuan
 */

public interface BaseDAO<Entity, ID extends Serializable> {
	
	/**
	 * save
	 * @param entity
	 * @return
	 */
	Number save(Entity entity);
	
	/**
	 * saveOrUpdate
	 * @param entity
	 * @param id
	 * @return
	 */
	Number saveOrUpdate(Entity entity, ID id);
	
	/**
	 * add
	 * @param entity
	 */
	int add(Entity entity);
	
	/**
	 * update
	 * @param entity
	 * @return
	 */
	int update(Entity entity);
	
	/**
	 * delete
	 * @param id
	 * @return
	 */
	int delete(ID id);
	
	/**
	 * truncate
	 */
	void truncate();
	
	/**
	 * count
	 * @return
	 */
	long count();
	
	/**
	 * countByPrimaryKey
	 * @param id
	 * @return
	 */
	long countByPrimaryKey(ID id);
	
	/**
	 * getMaxId
	 * @return
	 */
	long getMaxId();
	
	/**
	 * get
	 * @param id
	 * @return
	 */
	Entity get(ID id);
	
	/**
	 * find
	 * @return
	 */
	List<Entity> find();
	
}
